import { message } from 'antd'
import { useCallback } from 'react'

function useCopy(): [(str: string) => void] {
  const copy = useCallback(async (v: string): Promise<void> => {
    if (!v) {
      message.warning('复制内容为空！')
      return
    }
    try {
      await navigator.clipboard.writeText(v)
      message.success('复制成功！')
    } catch (error) {
      // 复制失败后在使用execCommand复制一次
      const textareaC = document.createElement('textarea')
      textareaC.setAttribute('readonly', 'readonly') //设置只读属性防止手机上弹出软键盘
      textareaC.value = v
      document.body.appendChild(textareaC) //将textarea添加为body子元素
      textareaC.select()
      const successful = document.execCommand('copy') // 执行 copy 操作
      if (successful) {
        message.success('复制成功！')
        document.body.removeChild(textareaC) //移除DOM元素
      } else {
        message.warning('复制失败，请手动复制！')
      }
    }
  }, [])

  return [copy]
}

export default useCopy
